package com.edu.controller;

import com.R;
import com.edu.service.MsmService;
import com.edu.utils.RandomUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

@RestController
@RequestMapping("/edumsm/msm")
@CrossOrigin
public class MsmController {

	@Autowired
	private MsmService msmService;

	@Autowired
	private RedisTemplate<String,String> redisTemplate;

	@GetMapping("/send/{phone}")
	public R sendMsm(@PathVariable String phone){
		//1 从redis中获取验证码，如果获取到直接返回
		String code = redisTemplate.opsForValue().get(phone);
		if (StringUtils.hasText(code)){
			return R.ok();
		}


		//2 如果从redis中获取不到，进行阿里云的发送
		//生成随机验证码，传递阿里云进行发送
		code = RandomUtil.getFourBitRandom();
		Map<String, Object> param = new HashMap<>();
		param.put("code",code);
		boolean isSend = msmService.send(param,phone);

		if (isSend){
			redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
			return R.ok();
		}else {
			return R.error().message("短信发送失败");
		}
	}
}
